<?php


namespace Part19_CombinationMode\Code1;

/**
 * Component为组合中的对象声明接口，在适当情况下，实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component的子部件。
 */
abstract class Component
{
    protected $name;

    public function __construct($name)
    {
        $this->name = $name;
    }

    /**
     * 增加树叶
     * @param Component $c
     * @return mixed
     */
    public abstract function add($c);

    /**
     * 移除树叶
     * @param Component $c
     * @return mixed
     */
    public abstract function remove($c);

    public abstract function display($depth);
}